WordPressをコマンドラインでインストールしたい
ウィスキー、シガー、パイプをこよなく愛する大栗です。
最近WordPressをインストールする機会があったのですが、インストールや設定変更を行う時にWeb画面を使う必要があり同じ環境を作るのが面倒なだと思っていました。コマンドラインで実行できるとミス無く環境を構築しやすいと思っているとWP-CLIというツールを見つけたのでコマンドラインでWordPressをインストールしてみました。
WP-CLI
公式サイトによると、以下のような説明がされています。
WP-CLI は WordPress を管理するためのコマンドラインツールです。 プラグインのアップデートやマルチサイトのセットアップなどの多くのことをブラウザ無しで行うことができます。
WP-CLI: Command line interface for WordPress
ブラウザ無しで管理を行うことが可能であるためWordPress環境の構築を自動化しやすくなりますね。
WP-CLIでWordPressをインストールする
前提環境
WordPressをインストールする環境はAWS環境で、以下の通りです。
- Web/APサーバ(EC2):Amazon Linux AMI 2016.03.3 x86_64 HVM GP2(ami-374db956)
- DBサーバRDS(RDS):MySQL 5.6.27
WP-CLIをインストールする
公式ドキュメントのインストール方法を元にインストールします。
まずは、必要となるパッケージをインストールします。PHPのバージョンは5.6、Apacheのバージョンは2.4としています。
$ sudo yum install -y php56 php56-mysqlnd httpd24 mysql
WP-CLIをダウンロードします。
$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
動作確認します。
$ php wp-cli.phar --info PHP binary: /usr/bin/php-5.6 PHP version: 5.6.22 php.ini used: /etc/php.ini WP-CLI root dir: phar://wp-cli.phar WP-CLI packages dir: WP-CLI global config: WP-CLI project config: WP-CLI version: 0.24.0
実行権限を与えて、/usr/local/bin/wp
へ移動します。
$ chmod +x wp-cli.phar $ sudo mv wp-cli.phar /usr/local/bin/wp
再度、動作確認します。
$ wp --info PHP binary: /usr/bin/php-5.6 PHP version: 5.6.22 php.ini used: /etc/php.ini WP-CLI root dir: phar://wp-cli.phar WP-CLI packages dir: WP-CLI global config: WP-CLI project config: WP-CLI version: 0.24.0
WordPressをインストールする
インストール先/var/www/html/
のオーナーをapacheへ変更します。
$ sudo chown apache:apache /var/www/html/
wp core download
コマンドでWordPressを/var/www/html/
へダウンロードします。apacheユーザで実行して、ロケールをja
にしています。
$ sudo -u apache /usr/local/bin/wp core download --locale=ja --path=/var/www/html Downloading WordPress 4.5.3 (ja)... md5 hash verified: dfbe4102868c5f65f151c74d26a51354 Success: WordPress downloaded.
wp core config
コマンドでWordPressの設定ファイルwp-config.php
を生成します。ここでは、DB名、RDSのユーザ、パスワード、エンドポイントを指定します。
$ sudo -u apache /usr/local/bin/wp core config --dbname='<DB名>' --dbuser='<RDSのユーザ>' --dbpass='<RDSのパスワード>' --dbhost='<RDSのエンドポイント>' --path=/var/www/html Success: Generated 'wp-config.php' file.
RDSにデータベースを作成していない場合は、以下のコマンドを実行してデータベースを作成して下さい。wp db create
コマンドでデータベースを作成します。
$ sudo -u apache /usr/local/bin/wp db create --path=/var/www/html Success: Database created.
wp core install
コマンドでWordPressをインストールします。
$ sudo -u apache /usr/local/bin/wp core install --url='<EC2のパブリックIP>' --title='サンプルDev.IO-2' --admin_name='<WordPressの管理者ユーザ>' --admin_password='<WordPressの管理者パスワード>' --admin_email=<管理者用メールアドレス> --path=/var/www/html Success: WordPress installed successfully.
また、WordPressでは.htaccess
を使うので許可をします。
# cat << EOS | sudo tee /etc/httpd/conf.d/wordpress.conf <Directory "/var/www/html"> AllowOverride All </Directory> EOS
apacheを起動します。
$ sudo service httpd start Starting httpd: [ OK ]
http://<EC2のパブリックIP>/wp-admin/
にアクセスしてみます。管理者のユーザとパスワードを入力してログインします。
インストール済みの状態となっています。
設定変更をコマンドラインで行う
次は設定をコランドラインで変更してみます。ここでは「パーマリンク設定」を変更してみます。
初期状態では、以下のよう「基本」になっています。
リンクを「/<ポスト名>.html」の形式に変更します。wp option add
コマンドで設定を設定します。
$ sudo -u apache /usr/local/bin/wp option add --autoload=yes --path=/var/www/html permalink_structure '/%postname%.html' Success: Added 'permalink_structure' option.
もしError: Could not add option 'permalink_structure'. Does it already exist?
とエラーが出た場合は、wp option update
コマンドを使用して下さい。
Web画面で更新する場合は.htaccess
も更新されますが、wp option add
コマンドではDB内の項目しか更新されません。そのため.htaccess
も作成します。
$ cat << EOS | sudo -u apache tee /var/www/html/.htaccess > # BEGIN WordPress > <IfModule mod_rewrite.c> > RewriteEngine On > RewriteBase / > RewriteRule ^index\.php$ - [L] > RewriteCond %{REQUEST_FILENAME} !-f > RewriteCond %{REQUEST_FILENAME} !-d > RewriteRule . /index.php [L] > </IfModule> > > # END WordPress > EOS
Web画面で確認すると、以下の様に更新されています。
試しに記事を書いてみます。
すると、「http://<EC2のパブリックIP>/<ポスト名>.html
形式のリンクが表示できるようになりました。
最後に
WordPressのインストールでは自動化しようとしても、結局設定変更やプラグインのインストールはWebの画面での入力が必要になります。しかし同じような環境を大量に構築する場合にWeb画面を使用すると、時間がかかるだけでなく操作の誤りが発生しやすくなります。WP-CLIを使用することで、短時間で正確な操作ができるようになります。
WordPressをインストールする時にWP-CLIの利用も検討してはいかがでしょうか。